As demand for storage space and networking bandwidth continues to increase, consumers are looking for ways to better utilize the resources available to them. To that end, there is an increasing demand for efficient implementation of data compression techniques. Data compression techniques are techniques directed at manipulation of data to reduce the total number of bytes required to represent the data. Through the use of one or more data compression techniques, current storage space and networking bandwidth may be more efficiently utilized.
There are two types of data compression: lossy and lossless. Lossy data compression allows for some loss of fidelity in the compressed information, while lossless data compression requires that the decompressed data be an exact copy of the original data. While lossy data compression may be suitable for applications that process audio, image and/or video data, a great many other data processing applications (e.g., those with text or computer executable code) require that the decompressed data exactly match the original data, as provided by lossless data compression. Some data in a data stream may be uncompressible by a particular compression algorithm. Uncompressible data may be present in a data stream for a number of reasons. For example, the data may be encrypted, or it may not contain any matching data segments of sufficient length.